//package com.bs.demo.controller;
//
//import cn.hutool.core.collection.CollectionUtil;
//import com.itextpdf.text.*;
//import com.itextpdf.text.pdf.*;
//import org.springframework.core.io.ClassPathResource;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author bingshao
// * @date 2023/5/15
// **/
//@RestController
//@RequestMapping("/pdf")
//public class PdfController {
//
//    public void exportPdf() throws Exception {
//        org.springframework.core.io.Resource resource = new ClassPathResource("pdf_template/delivery.pdf");
//        PdfReader reader = new PdfReader(resource.getInputStream());
//        BaseFont bf = BaseFont.createFont();
////        Font FontChinese = new Font(bf, 5, Font.NORMAL);
//        ByteArrayOutputStream bos = new ByteArrayOutputStream();
//        PdfStamper stamper = new PdfStamper(reader, bos);
//        AcroFields form = stamper.getAcroFields();
//        form.addSubstitutionFont(bf);
//        BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//        float bigFontSize = 10;
//        // false可编辑
//        stamper.setFormFlattening(true);
//
//        Map<String, String> map1 = new HashMap<>(32);
//        map1.put("orderCode", "orderCode");
//        map1.put("orderDate", "orderDate");
//        map1.put("code", "code");
//        map1.put("outTime", "outTime");
//        map1.put("custName", "custName");
//        map1.put("projectCode", "projectCode");
//        map1.put("warehouseName", "warehouseName");
//        map1.put("addressName", "addressName");
//        map1.put("projectItemId", "projectItemId");
//        map1.put("address", "address");
//        map1.put("linkman1", "linkman1");
//        map1.put("linkmanPhone1", "linkmanPhone1");
//        map1.put("linkman2", "linkman2");
//        map1.put("linkmanPhone2", "linkmanPhone2");
//        map1.put("arrivalDate", "arrivalDate");
//        map1.put("transportNotice", "transportNotice");
//        map1.forEach((key, value) -> {
//            try {
//                //设置这个表单域的字体
//                form.setFieldProperty(key, "textfont", bfChinese, null);
//                //设置这个表单域的字体大小
//                form.setFieldProperty(key, "textsize", bigFontSize, null);
//                form.setField(key, value);
//            } catch (IOException | DocumentException e) {
//                e.printStackTrace();
//            }
//        });
//
//        List<List<String>> deliveryLinePdfShowVosVo = new LinkedList<>();
//            List<String> itemListTitle = new LinkedList<>();
//            itemListTitle.add("姓名");
//            itemListTitle.add("性别");
//            itemListTitle.add("年龄");
//            itemListTitle.add("联系方式");
//        deliveryLinePdfShowVosVo.add(itemListTitle);
//
//        for (int i = 0; i < 10; i++) {
//            List<String> itemList = new LinkedList<>();
//            // add的顺序要和表头顺序一致，不然数据错乱
//
//            itemList.add(String.valueOf(i));
//            itemList.add(String.valueOf(i));
//            itemList.add(String.valueOf(i));
//            itemList.add(String.valueOf(i));
//            itemList.add(String.valueOf(i));
//            itemList.add(String.valueOf(i));
//            deliveryLinePdfShowVosVo.add(itemList);
//        }
//
//
//
//        mapList.put("deliveryLinePdfShowVos", deliveryLinePdfShowVosVo);
//        mapList.forEach((key, value) -> {
//            if (CollectionUtil.isNotEmpty(value)) {
//                int pageNo = form.getFieldPositions(key).get(0).page;
//                PdfContentByte pcb = stamper.getOverContent(pageNo);
//                Rectangle signRect = form.getFieldPositions(key).get(0).position;
//                //表格位置
//                int column = value.get(0).size();
//                int row = value.size();
//                PdfPTable table = new PdfPTable(column);
//                float totalWidth = signRect.getRight() - signRect.getLeft();
//                int size = value.get(0).size();
//                float[] width = new float[size];
//                for (int i = 0; i < size; i++) {
////                    if (i == 0) {
////                        width[i] = 60f;
////                    } else {
////                        width[i] = (totalWidth - 60) / (size - 1);
////                    }
//                    width[i] = totalWidth / size;
//                }
//                try {
//                    table.setTotalWidth(width);
//                } catch (DocumentException e) {
//                    e.printStackTrace();
//                }
//                table.setLockedWidth(true);
//                table.setKeepTogether(true);
//                table.setSplitLate(false);
//                table.setSplitRows(true);
//                Font fontProve = new Font(bfChinese, 10, 0);
//                //表格数据填写
//                for (int i = 0; i < row; i++) {
//                    List<String> itemListNew = value.get(i);
//                    for (int j = 0; j < column; j++) {
////                        Paragraph paragraph = new Paragraph(String.valueOf(itemListNew.get(j)), bfChinese);
//
//                        Phrase phrase = new Phrase(String.valueOf(itemListNew.get(j)), fontProve);
//                        PdfPCell cell = new PdfPCell(phrase);
//                        // 这里自己根据业务过滤，我这两个key是不需要进行显示出表格的边框的所以不设置边框并且左对齐
//                        if (key.equals("casesInoculationList") || key.equals("casesTraceVoList")) {
//                            cell.setBorderWidth(0);
//                            cell.setHorizontalAlignment(Element.ALIGN_LEFT);
//                        } else {
//                            cell.setBorderWidth(1);
//                            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
//                        }
//                        cell.setVerticalAlignment(Element.ALIGN_CENTER);
//
//                        cell.setLeading((float) 3.0, (float) 1.0);
//                        cell.setMinimumHeight(15f);
//                        table.addCell(cell);
//                    }
//                }
//                table.writeSelectedRows(0, -1, signRect.getLeft(), signRect.getTop(), pcb);
//            }
//
//        });
//
//
//    }
//}
